function ColorMap=Graph_ColorMap(Data)

%% Setup
n           =   500;
indexValue  =   0;
bottomcolor =   [30/255 80/255 178/255];
indexColor  =   [1 1 1];
topColor    =   [178/255 60/255 60/255];

%% 
Max         =   max(Data(:));
Min         =   min(Data(:));
Scale       =   max(abs([Max;Min]));

if Min>0
    TopColor    =   topColor;
    BottomColor =   indexColor;
    TempMat     =   linspace(0,1,n)';
    ColorMap    =   (1-TempMat).*BottomColor+(TempMat).*TopColor;
elseif Max<0
    TopColor    =   indexColor;
    BottomColor =   bottomcolor;
    TempMat     =   linspace(0,1,n)';
    ColorMap    =   (1-TempMat).*BottomColor+(TempMat).*TopColor;
else
    AdjFactor   =   0.0;
    IndexColor  =   indexColor;
    
    Factor_Top  =   (Max/Scale)^AdjFactor;
    TopColor    =   topColor*(Factor_Top)+IndexColor*(1-Factor_Top);
    
    Factor_Bot  =  (abs(Min)/Scale)^AdjFactor;
    BottomColor =   bottomcolor*(Factor_Bot)+IndexColor*(1-Factor_Bot);
    
    n_left      =   ceil(n*abs(Min/(Max-Min)));
    n_right     =   ceil(n*abs(Max/(Max-Min)));
    
    Curv        =   1e-4;
    
    TempMat_1   =   VecFun_MakeLogDiffGrid(0,1,n_left,-Curv)';
    TempMat_2   =   VecFun_MakeLogDiffGrid(0,1,n_right,Curv)';
    
    ColorMap_1  =   (1-TempMat_1).*BottomColor+TempMat_1.*IndexColor;
    ColorMap_2  =   (1-TempMat_2).*IndexColor+TempMat_2.*TopColor;
    
    ColorMap    =   [ColorMap_1;ColorMap_2];
end
ColorMap    =   max(ColorMap,0);
ColorMap    =   min(ColorMap,1);